/**
 * 将 SVG 元素转换为 Base64 编码的字符串
 * @param {SVGElement} svgElement - 要转换的 SVG 元素
 * @returns {string} - Base64 编码的 SVG 字符串
 */
export const svgToBase64 = (svgElement: HTMLElement): Promise<string> => {
  // 使用 XMLSerializer 将 SVG 元素序列化为字符串
  const serializer = new XMLSerializer()
  const svgString = serializer.serializeToString(svgElement)

  // 创建一个 Blob 对象，MIME 类型设置为 'image/svg+xml'
  const svgBlob = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' })

  return new Promise((resolve, reject) => {
    const reader = new FileReader()

    reader.onloadend = function () {
      resolve(reader.result as string)
    }

    reader.onerror = function () {
      reject(new Error('SVG 转换为 Base64 编码失败'))
    }

    reader.readAsDataURL(svgBlob)
  })
}
